package com.touni.designpattern.flyweightpattern;

import com.touni.designpattern.flyweightpattern.inter.Circle;
import com.touni.designpattern.flyweightpattern.inter.Shape;

import java.util.Random;

/**
 * @ClassName : FlyWeightDemo
 * @Description : 亨元模式  主要用于减少创建对象的数量，以减少内存占用和提高性能。
 * 这种类型的设计模式属于结构型模式，它提供了减少对象数量从而改善应用所需的对象结构的方式。
 *
 * 在有大量对象时，有可能会造成内存溢出，我们把其中共同的部分抽象出来，
 * 如果有相同的业务请求，直接返回在内存中已有的对象，避免重新创建。
 * @Author : lwq
 * @Date: 2020-11-12 14:38
 */
public class FlyWeightDemo {

    public static String[] colorArr = {"red","green","orange","blue","black","white","wink"};

    public static void main(String[] args) {
        for (int i = 0; i < 3; i++) {
            Circle circle = ShapeFactory.getShape(colorArr[getRandom()]);
            circle.setRadius(getRandom());
            circle.draw();
            System.out.println("========================" + "\n");
        }

    }

    public static int getRandom(){
        return new Random().nextInt(7);
    }

}
